﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

using System.Net;
using System.Net.Sockets;

namespace OINS_VS08
{
    class Crowds
    {
        List<String> listOfNodes = new List<String>(); //lista wezlow w drzewie
        public String nextNode; //nastepny odbiorca wiadomosci
        public String destinationNode; //docelowy odbiorca wiadomosci
        int parameter = 90; //liczba od 1 - 100, okresla niesymetrycznosc prawdopodobienstwa
        public int send = 0;

        /*Crowds(List<String> ListOfNodes)
        {
            this.ListOfNodes = ListOfNodes;
        }*/

        public int Random01() //losuje niesymetrycznie 0 lub 1 z prawdopodobienstwami [100-param] i [param] (w tym przypadku 30:70)
        {
            System.Random x = new Random(System.DateTime.Now.Millisecond);
            int a = x.Next(1, 100);
            if (a < parameter)
            {
                return 1;
            }
            else return 0;
        }


        public List<String> listofN()
        {
            return listOfNodes;
        }

        public void start()
        {
            int losuj = Random01();
            System.Console.Write("(" + losuj + ")");
            if (losuj == 0) //jak wylosuje mniej prawdopodobne '0' to wysyla do docelowego
            {
                Send();
                System.Console.WriteLine("POMYSLNIE WYSLANO do: {0}", destinationNode);
                send = 1;
            }
            if (losuj == 1) //jak wylosuje bardziej prawdopodobne '1' to wysyla do nastepnego
            {
                RandomSend();
            }

        }

        public void Send()
        {
            nextNode = destinationNode;
        }
        
        public void RandomSend()
        {
            System.Random x = new Random(System.DateTime.Now.Millisecond);
            int a = x.Next(0, listOfNodes.Count);
            nextNode = listOfNodes[a];
            System.Console.WriteLine("teraz: {0}", nextNode);

        }




    }
}

